入门
由Unity Technologies公司开发的用于轻松创建游戏和三维互动内容的开发工具,是一个国际领先的专业游戏引擎。
1. 特点
简单易用
开发效率高
价格便宜
新手居多
23个平台间自由迁移,出色的部署,完全的覆盖
发布的额平台包括:IOS、Android、Windows Phone、Windows、Web、微软Xbox360、索尼PS3、任天堂Wii等。
在移动平台,Unity几乎成为3D游戏开发的标准工具。
炉石传说、全民狙击……
2D游戏:视角完全锁定,二维坐标。
2048
- 3D游戏:可以任意变化视角,无锁定。三维坐标。
csgo
2. 虚拟现实(Virtual Reality)
- 当今世界前沿科技之一。
利用电脑模拟产生一个三维空间的虚拟世界,并提供视觉、听觉、触觉等感官的模拟。使用者通过各种输入设备与虚拟环境中的事物进行交互,从而产生身临其境的体验。
VR设备
移动端头显设备
只需将手机放入即可,使用方便、价格低廉。但受硬件性能制约,用户体验感不足。
外接式头戴设备
需要连接至PC,具有更强劲的性能,更良好的体验,可以捕捉肢体动作。但价格过高,需要额外硬件的支持。
一体式头戴设备
具备独立的运算、输入输出功能,不受空间和其他设备(PC、手机)限制。但目前还不成熟,产品偏少。
其他设备:Xbox One + Kinect、zSpace……
VR应用
军工、科研、游戏、视频、教育、旅游、家装、虚拟试驾、房地产项目展示……
3. 增强现实(Augmented Reality)
通过电脑技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。
AR与VR的区别
VR看到的场景和人物全是假的,是把你的意识代入一个虚拟的世界。AR看到的场景和人物,一部分是真一部分是假,是把虚拟的信息带入到现实世界中。
4. 游戏引擎
- 程序的框架,一款游戏最最核心的代码。
- 包含以下系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、动画系统、人工智能、网络引擎、以及场景管理。
- 使用游戏引擎,开发者可以重用已有的核心技术,将精力集中在游戏逻辑和设计上,从而简单快速的创建游戏。
5. 常用快捷键
Scene面板
- 鼠标滚轮上下左右拖动场景,滑动滚轮缩放场景。
- 鼠标右键3D旋转场景,通过左键移动场景或选中对象。
- 点击右键同时按住W/A/S/D/Q/E键可以实现场景漫游。
- 在Scene面板选中物体后按F键,或在Hierarchy面板双击物体,可将物体设置为场景视图的中心。
- 按住alt键同时通过鼠标左键围绕某物体旋转场景,鼠标右键缩放场景。
- 变换场景Q,移动物体W,旋转物体E,缩放物体R。
- 顶点吸附:选择物体后按住V键,定位定点,再拖拽到目标物体某个定点上。(先松V键)
变换切换
改变游戏对象的轴心点
Center:设置轴心点在物体中心
Pivot:使用物体本身的轴心
改变物体的坐标
Global:世界坐标
Local:自身坐标
播放控件
预览游戏,暂停游戏,逐帧播放。
查看游戏最终运行后的画面。在运行模式下,任何更改都只是暂时的,在退出运行时会重置复位。
视图
- ISO:正交观察模式
- Persp:透视观察模式(近大远小)
视图角度:上下左右前后
坐标
- 坐标:X红色,Y绿色,Z蓝色。(右X前Z上Y)
- 世界坐标:整个场景的固定坐标,不随物体旋转而改变。
- 本地坐标:物体自身坐标,随旋转而改变。
6. 场景 Scene
后缀名.unity
,通常存放于./Assets/Scenes
目录下。
- 一组相关联的游戏对象的集合,通常游戏中每个关卡就是一个场景,用于展现当前关卡中的所有物体。
7. 游戏对象 Game Object
运行时出现在场景中的游戏物体。
例如:人物、地形、树木……
是一种容器,可以挂载组件。
父、子物体
在Hierarchy面板中,将一个物体拖拽到另外一个物体中。
子物体将继承父物体的移动,旋转和缩放属性,但子物体不影响父物体。
8. 组件
- 是游戏对象的功能模块。
- 每个组件都是一个类的实例。
- Transform变换组件:决定物体位置、旋转、缩放比。
- Mesh Filter网格过滤器:用于从资源中获取网格信息。
- Mesh Renderer网格渲染器:从网格过滤器中获得几何形状,再根据变化组件定义的位置进行渲染。
- 网格过滤器与网格渲染器联合使用,使模型显示到屏幕上。
8.1. Transform
Position, Rotation, Scale.
8.2. Mesh Filter
8.3. Mesh Renderer
Material作为element附在Mesh Renderer中。
8.4. Material 材质
- 材质:物体的质地,指色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。实际就是Shader的实例。
- Shader着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法。
- Texture纹理:附加到物体表面的贴图。
物理着色器
基于物理特性的Shader是Unity5.x的重大革新之一,所谓物理着色器(Physically Based Shading, PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照条件下都接近真实的效果。
当Shader为Standard时:
Rendering Mode
- 渲染模式
- Opaque 不透明,默认选项。
- Transparent 透明,用于半透明和全透明物体,如玻璃。
- Cutout 镂空,用于完全透明或完全不透明物体,如栅栏。
- Fade 渐变,用于需要淡入淡出的物体。
Main Maps
- Albedo 基础贴图:决定物体表面纹理与颜色。
- Metallic 金属:使用金属特性模拟外观。
- Specular 镜面反射:使用镜面特性模拟外观。
- Smoothness 光滑度:设置物体表面光滑程度。
- Normal Map 法线贴图:描述物体表面的凹凸程度。
- Emission 自发光:控制物体表面自发光颜色和贴图。
- None 不影响环境
- Realtime 实时动态改变
- Backed 烘焙生效
- Tiling 平铺:沿着不同的轴、纹理平铺个数。
- Offset 偏移:滑动纹理。
- 渲染模式
9. 摄像机
- 附加了摄像机Camera组件的游戏对象。
- 向玩家捕获和显示世界的设备。
- 场景中摄像机的数量不受限制。
摄像机附带的组件
- Transform 变换组件
- Camera 摄像机
- Flare Layer 耀斑层:激活可显示光源耀斑
- GUI Layer:激活可渲染二维GUI元素
- Audio Listener 音频监听器:接收场景输入的音频源Audio Source并通过计算机的扬声器播放声音。
属性
Clear Flags 清除标识:决定屏幕的空白部分如何处理
Skybox 天空盒:空白部分显示天空盒图案
- 围绕整个场景的包装器,用于模拟天空的材质。
- 天空盒材质种类:6 Sised, Procedural, Cubemap.
Solid Color 纯色:空白部分显示背景颜色
Depth Only 仅深度:画中画效果时,小画面摄像机选择该项可清除屏幕空部分信息,只保留物体颜色信息。
Don't Clear 不清除:不清除任何颜色或深度缓存。
可以自定天空盒组件。
使用天空盒材质:
设置Camera的Clear Flags属性为Skybox。
方式一:摄像机添加Skybox Component。
方式二:光照窗口。(常用)
Window -> Rendering -> Lighting -> Environment
可作为反射源将天空色彩反射到场景中物体。
Procedural 属性
- Sun 太阳模式
- None 没有
- Simple 简单
- High Quality 高质量
- Atmosphere Thickness 大气层厚度
- Ground 地面颜色
- 如果为Environment Lighting 的Sun属性设置一个平行光,场景中会根据平行光角度自动创建太阳,并且位置随平行光旋转而改变。如果不设置,系统将默认选择场景中最亮的平行光。
Background 背景:所有元素绘制后,没有天空盒的情况下剩余屏幕的颜色。
Culling Mask 选择屏蔽层:选择要照射的层Layer,取消则不展示,也不会进行渲染。
Projection投射方式:
Perspective 透视(3D):透视图,物体具有近大远小的效果。
- Field of View 视野(透视模式):设置相机视野的远近距离。
Orthographic 正交(2D):摄像机会均匀地渲染物体,没有透视感,通常小地图使用。
- Size 大小(正交模式):摄像机视口的大小。
Clipping Planes:相机到开始和结束渲染的距离。
Near 近:绘制的最近点。
Far 远:绘制的最远点。
Viewport Rect 视口矩形:标明这台相机视图将会在屏幕上绘制的屏幕坐标。
X:摄像机视图的水平位置。
Y:摄像机视图的垂直位置。
W 宽度:摄像机输出在屏幕上的宽度。
H 高度:摄像机输出在屏幕上的高度。
Depth 深度:相机在渲染顺序上的位置。具有较低深度的摄像机将在较高深度的摄像机之前渲染。
10. 渲染过程
渲染管线
- 图形数据在GPU上经过运算处理,最后输出到屏幕的过程。
定点处理
- 接收模型顶点数据。
- 坐标系转换。
图元装配
- 组装面:连接相邻的顶点,绘制为三角面。
光栅化
- 计算三角面上的像素,并为后面着色阶段提供合理的插值参数。
像素处理
- 为每个像素区域进行着色。
- 写入到缓存中。
缓存
- 一个存储像素数据的内存块,最重要的缓存是帧缓存与深度缓存。
- 帧缓存:存储每个像素的色彩,即渲染后的图像。帧缓存常常在显存中,显卡不断读取并输出到屏幕中。
- 深度缓存z-buffer:存储像素的深度信息,即物体到摄像机的距离。光栅化时便计算各像素的深度值,如果新的深度值比现有指更近,则像素颜色被写到帧缓存,并替换深度缓存。
11. 光照系统
Global Illumination
- 简称GI,即全局光照。
- 能够计算直接光、间接光、环境光以及反射光的光照系统。
- 通过GI算法可以使渲染出来的光照效果更为真实丰富。
Realtime GI 实时GI
- 所谓“实时”是指在运行期间任意修改光源,而所有的变化可以立即更新。
- 需要将游戏对象设置为Lightmaping Static.
烘焙GI
- 当场景包含大量物体时,实时光照和阴影对游戏性能有很大影响。使用烘焙技术,可以将光线效果预渲染成贴图再作用到物体上模拟光影,从而提高性能。适用于在性能较低的设备上运行的程序。
- 需要将游戏对象设置为Lightmaping Static.
光源侦测
- 由于LightMapping只能作用于static物体,所以导致运动的物体与场景中的光线无法融合在一起,显得非常不真实。而Light Probes组件可以通过Probe收集光影信息,然后对运动物体临近的几个Probe进行插值运算,最后将光照作用到物体上。
直接光照
从光源直接发出的光,通过Light组件实现。
Type类型:灯光对象的当前类型。
- Directional Light 平行光:平行发射光线,可以照射场景里所有物体,用于模拟太阳。
- Point Light 点光源:在灯光位置上向四周发射光线,可以照射其范围内的所有对象,用于模拟灯泡。
- Spot Light 聚光灯:在灯光位置上向圆锥区域内发射光线,只有在这个区域内的物体才会受到光线照射,用于模拟探照灯。
- Area Light 区域光:由一个面向一个方向发射光线,只照射该区域内物体,仅烘焙时有效,用在光线较为集中的区域。
Range 范围:光从物体的中心发射的范围。仅适用于点光源和聚光灯。
Spot Angle 聚光角度:灯光的聚光角度。只适用于聚光灯。
Color 颜色:光线的颜色。
Intensity 强度:光线的明亮程度。
Culling Mask 选择遮蔽层:选择要照射的层Layer。
Shadow Type 阴影类型:Hard硬阴影、Soft软阴影。
- Strength 硬度:阴影的黑暗程度。
- Resolution 分辨率:设置阴影的细节程度。
- Bias 偏移:物体与阴影的偏移。
通过Mesh Renderer 组件启用禁用阴影.
- Cast / Receive Shadows 当前物体是否投射 / 接收阴影。
- Off 不投射阴影,On 为投射阴影,Two Sided 双面阴影,Shadows Only 隐藏物体只投射阴影。
阴影剔除:设置显示阴影的距离。
Edit -> Project Settings -> Quality -> Shadows Distance
间接光照
- 物体表面在接受光照后反射出来的光。
- 通过Light组件中Bounce Intensity 反弹强度控制。
- 可以通过Scene面板Irradiance 模式查看间接光照。
- 注意:只有标记Lightmaping Static 的物体才能产生间接反弹光照。
环境光照
作用于场景内所有物体的光照,通过Environment Lighting 中Ambient 控制。
Ambient Source 环境光源
Skybox 通过天空盒颜色设置环境光照
Gradient 梯度颜色
Sky 天空颜色、Equator 地平线颜色、Ground 地面颜色
Ambient Color 纯色
Ambient Intensity 环境光强度
Ambient GI 环境光GI模式
- Realtime 实时更新,环境光源会改变选择此项。
- Backed 烘焙,环境光源不会改变选择此项。
反射光照
根据天空盒或立方体贴图计算的作用于所有物体的反射效果,通过Environment Lighting 中Reflection 控制。
Reflection Source 反射源
Skybox 天空盒
Resolution 分辨率、Compression 是否压缩
Custom 自定义
Cubemap 立方体贴图
Reflection Intensity 反射强度
Reflection Bounces 使用Reflection Probe后允许不同游戏对象间来回反弹的次数。
12. 声音
Unity支持的音频文件格式:mp3, ogg, wav, aif, mod, it, s3m, xm.
声音分为2D、3D两类
3D声音:有空间感,近大远小。
2D声音:适合背景音乐。
在场景中产生声音,主要依靠两个重要组件:
Audio Listener 音频监听器:接收场景中音频源Audio Source 发出的声音,通过计算机的扬声器播放声音。
Audio Source 音频源。
Audio Source
- Audio Clip 音频剪辑:需要播放的音频资源。
- Mute 静音。
- Play On Awake 唤醒播放:勾选后场景启动时自动播放。
- Loop 循环。
- Volume 音量。
- Pitch 音调:通过改变音调值调节音频播放速度。
- Stereo Pan:2D声音设置左右声道。
- Spatial Blend:2D与3D声音切换。
13. 插件
13.1. InstantOC
Occlusion Culling 即时遮挡剔除
- 及时遮挡剔除 Instant Occlusion Culling
- 遮挡剔除:当物体被送进渲染流水线之前,将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能。
- 新版Unity已内部集成。
LOD多细节层次
多细节层次 Levels of Detail
LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。